import { get, post, put, del, upload } from '@/utils/request.js'
import { getPayData, getSubscribe, createPayOrder, fetchPayData, fetchSubscribeData, submitPayOrder,getIosProductList,submitH5Pay,h5Pay ,getSubscribeAddon,orderInfo,getArticleDetails} from './payApi.js'


/**
 * 用户登录
 * @param {Object} data 登录数据
 * @param {String} data.username 用户名/邮箱/手机号
 * @param {String} data.password 密码
 * @returns {Promise}
 */
export function login(data) {
	return post('/auth/login', data)
}

/**
 * 用户注册
 * @param {Object} data 注册数据
 * @returns {Promise}
 */
export function register(data) {
	return post('/auth/register', data)
}

/**
 * 获取用户信息
 * @returns {Promise}
 */
export function getUserInfo(data) {
	return post('/User/UserCenter',data)
}

/**
 * 更新用户信息
 * @param {Object} data 用户信息
 * @returns {Promise}
 */
export function updateUserInfo(data) {
	return put('/user/info', data)
}

/**
 * 修改密码
 * @param {Object} data 密码数据
 * @param {String} data.oldPassword 旧密码
 * @param {String} data.newPassword 新密码
 * @returns {Promise}
 */
export function changePassword(data) {
	return post('/user/change-password', data)
}

/**
 * 退出登录
 * @returns {Promise}
 */
export function logout() {
	return post('/auth/logout')
}

// ================================
// 订阅相关接口
// ================================

/**
 * 获取订阅套餐列表
 * @returns {Promise}
 */
export function getSubscriptionPlans() {
	return get('/subscription/plans')
}

/**
 * 创建订阅订单
 * @param {Object} data 订阅数据
 * @param {String} data.planId 套餐ID
 * @param {String} data.paymentMethod 支付方式
 * @returns {Promise}
 */
export function createSubscription(data) {
	return post('/subscription/create', data)
}

/**
 * 获取用户订阅状态
 * @returns {Promise}
 */
export function getSubscriptionStatus() {
	return get('/subscription/status')
}

/**
 * 取消订阅
 * @param {String} subscriptionId 订阅ID
 * @returns {Promise}
 */
export function cancelSubscription(subscriptionId) {
	return post(`/subscription/${subscriptionId}/cancel`)
}

/**
 * 恢复购买
 * @param {Object} data 恢复数据
 * @returns {Promise}
 */
export function restorePurchase(data) {
	return post('/subscription/restore', data)
}

// ================================
// 充值相关接口
// ================================

// 重新导出优化后的支付API
export { getPayData, getSubscribe, createPayOrder, fetchPayData, fetchSubscribeData, submitPayOrder,getIosProductList }

/**
 * 获取特殊优惠列表
 * @returns {Promise}
 */
export function getSpecialOffers() {
	return get('/topup/special-offers')
}

/**
 * 购买特殊优惠
 * @param {Object} data 购买数据
 * @param {String} data.offerId 优惠ID
 * @param {String} data.paymentMethod 支付方式
 * @returns {Promise}
 */
export function buySpecialOffer(data) {
	return post('/topup/special-offer', data)
}

// ================================
// 金币相关接口
// ================================

/**
 * 获取用户金币余额
 * @returns {Promise}
 */
export function getCoinBalance() {
	return get('/coins/balance')
}

/**
 * 获取金币交易记录
 * @param {Object} params 查询参数
 * @param {Number} params.page 页码
 * @param {Number} params.pageSize 每页数量
 * @param {String} params.type 交易类型
 * @returns {Promise}
 */
export function getCoinTransactions(params) {
	return get('/coins/transactions', params)
}

/**
 * 使用金币
 * @param {Object} data 使用数据
 * @param {Number} data.amount 使用数量
 * @param {String} data.reason 使用原因
 * @returns {Promise}
 */
export function useCoins(data) {
	return post('/coins/use', data)
}

// ================================
// 支付相关接口
// ================================

/**
 * 获取支付方式列表
 * @returns {Promise}
 */
export function getPaymentMethods() {
	return get('/payment/methods')
}

/**
 * 创建支付订单
 * @param {Object} data 支付数据
 * @param {String} data.orderId 订单ID
 * @param {String} data.paymentMethod 支付方式
 * @returns {Promise}
 */
export function createPayment(data) {
	return post('/payment/create', data)
}

/**
 * 查询支付状态
 * @param {String} paymentId 支付ID
 * @returns {Promise}
 */
export function getPaymentStatus(paymentId) {
	return get(`/payment/${paymentId}/status`)
}

/**
 * 支付回调验证
 * @param {Object} data 回调数据
 * @returns {Promise}
 */
export function verifyPayment(data) {
	return post('/payment/verify', data)
}

// ================================
// 订单相关接口
// ================================

/**
 * 获取订单列表
 * @param {Object} params 查询参数
 * @param {Number} params.page 页码
 * @param {Number} params.pageSize 每页数量
 * @param {String} params.status 订单状态
 * @param {String} params.type 订单类型
 * @returns {Promise}
 */
export function getOrders(params) {
	return get('/orders', params)
}

/**
 * 获取订单详情
 * @param {String} orderId 订单ID
 * @returns {Promise}
 */
export function getOrderDetail(orderId) {
	return get(`/orders/${orderId}`)
}

/**
 * 取消订单
 * @param {String} orderId 订单ID
 * @returns {Promise}
 */
export function cancelOrder(orderId) {
	return post(`/orders/${orderId}/cancel`)
}

// ================================
// 语言相关接口
// ================================

/**
 * 获取语言列表
 * @returns {Promise}
 */
export function getLanguageList() {
	return get('/Language/list')
}

/**
 * 获取语言包/翻译内容
 * @param {Object} data 请求参数
 * @param {String} data.lang 当前语言
 * @param {String} data.oldlang 旧语言
 * @returns {Promise}
 */
export function getLanguage(data) {
	return post('/Language/getTranslations', data)
}

/**
 * 获取协议详情（隐私政策等）
 * @param {Object} data 请求参数
 * @param {String} data.type 协议类型（如 'privacy'）
 * @returns {Promise}
 */
export function articleProtocolDetails(data) {
	return post('/Info/articleProtocolDetails', data)
}

// ================================
// 系统相关接口
// ================================

/**
 * 获取系统配置
 * @returns {Promise}
 */
export function getSystemConfig() {
	return get('/system/config')
}

/**
 * 获取版本信息
 * @returns {Promise}
 */
export function getVersionInfo() {
	return get('/system/version')
}

/**
 * 上报错误日志
 * @param {Object} data 错误数据
 * @param {String} data.error 错误信息
 * @param {String} data.stack 错误堆栈
 * @param {String} data.url 页面URL
 * @param {Object} data.userAgent 用户代理信息
 * @returns {Promise}
 */
export function reportError(data) {
	return post('/system/error-report', data)
}

// ================================
// 文件上传接口
// ================================

/**
 * 上报用户行为
 * @param {Object} data 行为数据
 * @param {String} data.action 行为类型
 * @param {String} data.page 页面
 * @param {Object} data.params 参数
 * @returns {Promise}
 */
export function reportUserAction(data) {
	return post('/analytics/user-action', data, { loading: false })
}

/**
 * 获取用户统计数据
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getUserStats(params) {
	return get('/analytics/user-stats', params)
}

// ================================
// 推送通知接口
// ================================

/**
 * 注册推送设备
 * @param {Object} data 设备数据
 * @param {String} data.deviceToken 设备令牌
 * @param {String} data.platform 平台
 * @returns {Promise}
 */
export function registerPushDevice(data) {
	return post('/push/register', data)
}

/**
 * 获取通知列表
 * @param {Object} params 查询参数
 * @returns {Promise}
 */
export function getNotifications(params) {
	return get('/notifications', params)
}

/**
 * 标记通知已读
 * @param {String} notificationId 通知ID
 * @returns {Promise}
 */
export function markNotificationRead(notificationId) {
	return post(`/notifications/${notificationId}/read`)
}

// 导出所有接口
export default {
	// 用户相关
	login,
	register,
	getUserInfo,
	updateUserInfo,
	changePassword,
	logout,
	
	// 订阅相关
	getSubscriptionPlans,
	createSubscription,
	getSubscriptionStatus,
	cancelSubscription,
	restorePurchase,
	getSubscribeAddon,
	orderInfo,
	getArticleDetails,
	
	// 充值相关（优化版本）
	h5Pay,
	getPayData,
	getSubscribe,
	getIosProductList,
	createPayOrder,
	fetchPayData,
	fetchSubscribeData,
	submitPayOrder,
	getSpecialOffers,
	buySpecialOffer,
	articleProtocolDetails,
	// 金币相关
	getCoinBalance,
	getCoinTransactions,
	useCoins,
	
	// 支付相关
	getPaymentMethods,
	createPayment,
	getPaymentStatus,
	verifyPayment,
	
	// 订单相关
	getOrders,
	getOrderDetail,
	cancelOrder,
	
	// 系统相关
	getSystemConfig,
	getVersionInfo,
	reportError,
	
	// 统计相关
	reportUserAction,
	getUserStats,
	
	// 推送通知
	registerPushDevice,
	getNotifications,
	markNotificationRead,
	
	// 语言相关
	getLanguageList,
	getLanguage,
	
	// 协议相关
	articleProtocolDetails,
	
	submitH5Pay
}
